package com.wxwyapp.service;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSONObject;

import com.jfinal.core.Controller;
import com.justep.baas.data.Table;
import com.justep.baas.data.Transform;
import com.justep.baas.data.Util;
import com.wxwyapp.config.DBSource;

/**
 * 作用描述：网欣物业wex5平台查询数据返回
 * @author LRC
 * @createDate 2015年10月18日
 * @version v1.0 
 * @updateRecord 格式：时间，作者，修改说明
 **
 * 
 */
public class WeX5WxWyUserService {

	/**
	 * 功能描述：查询报修列表信息
	 * @createDate 2015年10月18日 by LRC
	 * @param c
	 * @return 
	 * @updateRecord 格式：时间，作者，修改说明
	 **
	 * 
	 */
	public static Table queryRepairDataList(Controller c){
		// 参数序列化
		String strData = c.getPara("params");
		JSONObject params = (JSONObject) JSONObject.parse(strData);
		
		// 获取参数
		Object columns = params.get("columns");
		Integer limit = params.get("limit")==null ? null : Integer.parseInt(params.get("limit").toString());
		Integer offset = params.get("offset")==null ? null : Integer.parseInt(params.get("offset").toString());
		String search = params.getString("search");

		// 存放SQL中的参数值
		List<Object> sqlParams = new ArrayList<Object>();
		
		// 构造过滤条件 房号查询
		List<String> filters = new ArrayList<String>();
		if (!Util.isEmptyString(search)) {
			filters.add("houseNo LIKE ? ");
			// 多个问号参数的值
			search = (search.indexOf("%") != -1) ? search : "%" + search + "%";
			for (int i = 0; i < 4; i++) {
				sqlParams.add(search);
			}
		}
		
		// 按用户ID过滤
		String userID = params.getString("applicantId");
		
		if (!Util.isEmptyString(userID)) {
			filters.add("applicantId = ?");
			sqlParams.add(userID);
		}
		
		Table table = null;
		try {
			table = Util.queryData(DBSource.PMS2_PMS, "pms_bu_repair", columns, filters, "id ASC", sqlParams, offset, limit);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return table;
	}
	
	/**
	 * 功能描述：查询报修详细信息
	 * @createDate 2015年10月18日 by LRC
	 * @param c
	 * @return 
	 * @updateRecord 格式：时间，作者，修改说明
	 **
	 * 
	 */
	public static Table queryRepairData(Controller c){
		// 参数序列化
		String strData = c.getPara("params");
		JSONObject params = (JSONObject) JSONObject.parse(strData);

		// 获取参数
		Object columns = params.get("columns");

		//获取对象ID
		String id = params.getString("id");

		List<Object> sqlParams = new ArrayList<Object>();
		List<String> filters = new ArrayList<String>();
		filters.add("id = ?");
		sqlParams.add(id);
		
		Table table = null;
		try {
			table = Util.queryData(DBSource.PMS2_PMS, "pms_bu_repair", columns, filters, "id ASC", sqlParams, null, null);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return table;
	}
	
	/**
	 * 功能描述：保存报修信息
	 * @createDate 2015年10月18日 by LRC
	 * @param c
	 * @return 
	 * @updateRecord 格式：时间，作者，修改说明
	 **
	 * 
	 */
	public static Boolean saveRepariData(Controller c){
		
		String strData = c.getPara("params");
		JSONObject params = (JSONObject) JSONObject.parse(strData);
		
		//获取数据集
		JSONObject data = params.getJSONObject("repairData");
		
		try {
			Table repairTable = Transform.jsonToTable(data);
			Util.saveData(DBSource.PMS2_PMS, repairTable, "pms_bu_repair");
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
	
	/**
	 * 功能描述：查询报修详细信息
	 * @createDate 2015年10月18日 by LRC
	 * @param c
	 * @return 
	 * @updateRecord 格式：时间，作者，修改说明
	 **
	 * 
	 */
	public static Table queryUserData(Controller c){
		// 数据参数名
		String openId = c.getPara("openId");

		// 获取参数
		Object columns = c.getPara("columns");


		List<Object> sqlParams = new ArrayList<Object>();
		List<String> filters = new ArrayList<String>();
		filters.add("openId = ?");
		sqlParams.add(openId);
		
		System.out.println(openId);
		System.out.println(columns);
		Table table = null;
		try {
			table = Util.queryData(null, "wx_base_user", columns, filters, "id ASC", sqlParams, null, null);
			System.out.println(table);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return table;
	}
}
